Section 5 Exploratory Analysis

High-level summaries of the data.

5.1 Study Location Map

Map of the BHEF, 2021 harvest boundaries, and 2023-06 UAS flight boundaries. The UAS flights covered 719.9 acres (291.3 ha). There are 6 stands harvested in 2021 that are entirely within the UAS flight boundaries. The harvested stands range in size from 9.6 acres (3.9 ha) to 167.8 acres (67.9 ha).

# map
mapview::mapview(
  bhef_boundary
  , color = "black"
  , lwd = 3
  , alpha.regions = 0
  , layer.name = "BHEF"
  , label = FALSE
  , legend = FALSE
  , popup = FALSE
) +
mapview::mapview(
  las_ctg_dta
  , color = "firebrick"
  , lwd = 2
  , col.regions = c("firebrick")
  , alpha.regions = 0.3
  , layer.name = "UAS Flight Boundaries"
  , label = FALSE
  , legend = T
  , popup = FALSE
) +
mapview::mapview(
  harvests
  , zcol = "treatment_type_grp"
  , col.regions = viridis::turbo(n=length(unique(harvests$treatment_type_grp)))
  , alpha.regions = 0.6
  , layer.name = "Harvests (2021)"
  , legend = T
    , popup = leafpop::popupTable(
        harvests
        , zcol = c(
          "year_id"
          , "treatment_type_grp"
          , "activity_name"
        )
        , row.numbers = FALSE
        , feature.id = FALSE
      )
)

5.2 Digital Terrain Model (DTM) Map

Map the SfM-derived digital terrain model (DTM) (sometimes called Digital Elevation Models [DEM]) which is a topographic model of the bare Earth containing the elevation data of the terrain.

mapview::mapview(
  bhef_boundary
  , color = "black"
  , lwd = 3
  , alpha.regions = 0
  , layer.name = "BHEF"
  , label = FALSE
  , legend = FALSE
  , popup = FALSE
) +
# aggregate raster and map
    mapview::mapview(
      dtm_rast %>%
        terra::aggregate(fact=2) %>% 
        `*`(3.28) %>% # transform to feet
        stars::st_as_stars()
      , layer.name = "elev. (ft)"
      , col.regions = viridis::viridis(n=100)
      , alpha.regions = 0.7
      , na.color = "transparent"
    )

5.3 Canopy height model (CHM) Map

Map the SfM-derived canopy height model which is a measurement of the height of trees above the ground topography.

mapview::mapview(
  bhef_boundary
  , color = "black"
  , lwd = 3
  , alpha.regions = 0
  , layer.name = "BHEF"
  , label = FALSE
  , legend = FALSE
  , popup = FALSE
) +
# aggregate raster and map
    mapview::mapview(
      chm_rast_temp
      , layer.name = "canopy ht. (ft)"
      , col.regions = viridis::plasma(n=50)
      , alpha.regions = 0.7
      , na.color = "transparent"
    ) 
  # # tree_tops
  # mapview::mapview(
  #   treetops_sf_with_dbh
  #   , cex = 0.5
  #   , layer.name = "tree tops"
  #   , label = F
  #   , legend = F
  #   , popup = F
  # )

5.4 DBH Distribution

DBH distribution of trees that are in a harvested unit. Trees within harvest unit boundaries have a DBH range from 0.1 in (0.2 cm) to 28.3 in (71.8 cm) with a median of 3.2 in (8.2 cm).

harvests_trees %>% 
  sf::st_drop_geometry() %>% 
  dplyr::select(treeID, dbh_in) %>% 
  dplyr::distinct() %>% 
  ggplot(
    mapping = aes(x = dbh_in)
  ) +
    geom_density(alpha = 0.8, fill = "navy", color = NA) + 
    labs(
      x = "DBH (in)"
      , y = "density"
      , title = "SfM-derived tree DBH distribution"
    ) +
    scale_x_continuous(breaks = scales::extended_breaks(n=20)) +
    theme_light() +
    theme(
      legend.position = "none"
    )

5.5 Height Distribution

Height distribution of trees that are in a harvested unit. Trees within harvest unit boundaries have a height range from 4.5 ft (1.4 m) to 90.9 ft (27.7 m) with a median of 16.8 ft (5.1 m).

harvests_trees %>% 
  sf::st_drop_geometry() %>% 
  dplyr::select(treeID, tree_height_ft) %>% 
  dplyr::distinct() %>% 
  ggplot(
    mapping = aes(x = tree_height_ft)
  ) +
    geom_density(alpha = 0.8, fill = "steelblue", color = NA) + 
    labs(
      x = "Height (ft)"
      , y = "density"
      , title = "SfM-derived tree height distribution"
    ) +
    scale_x_continuous(breaks = scales::extended_breaks(n=10)) +
    theme_light() +
    theme(
      legend.position = "none"
    )

5.6 Relationship between height and DBH

### plot
harvests_trees %>% 
  sf::st_drop_geometry() %>% 
  dplyr::slice_sample(prop = 0.2) %>% 
  dplyr::select(treeID, tree_height_ft, dbh_in) %>% 
  dplyr::distinct() %>% 
  ggplot(
    mapping = aes(y=tree_height_ft, x = dbh_in)
  ) +
  geom_point(
    alpha = 0.6
    , size = 0.6
    , color = "gray"
  ) + 
  geom_smooth(
    method = "loess"
    , se = F
    , span = 1
    , color = "gray33"
    , alpha = 0.7
  ) +
  labs(
    x = "DBH (in)"
    , y = "Tree Ht. (ft)"
    , title = "SfM-derived tree height and DBH relationship"
  ) +
  theme_light() +
  theme(
    legend.position = "none"
  )